package com.itheima.web.controller;


import com.itheima.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Date;
import java.util.Map;

@Controller
//一级url路径
@RequestMapping("/param")
public class ParamController {
    @RequestMapping("/test1")
    //表单中的传输name的名称为username
    public String test1(@RequestParam("username") String name , int age) {
        System.out.println("name:" + name);
        System.out.println(age == 10);
        return "success";
    }


    //请求的参数封装到user对象中
    @RequestMapping("/test2")
    public  String test2(User user,String hobbies) {
        System.out.println(user);
        System.out.println(hobbies);
        return "success";
    }

    //带有日期格式
    //需要开启转换 在springmvc.xml中配置
    @RequestMapping("/test3")
    public String test3(Date birthday) {
        System.out.println(birthday);
        return "success";
    }

    //spring响应响应客户端浏览器的几种方式
    //原生请求响应Request(不建议使用 操作繁琐)
    @RequestMapping("/test4")
    public String test4(HttpServletRequest req, HttpSession session) {
        //存入请求域
        req.setAttribute("username","xiaofeiji");
        //存入session域
        session.setAttribute("username","naxia");
        return "main";
    }

    //第二种ModelAndView方式 把值传输到请求域中
    @RequestMapping("/test5")
    public ModelAndView test5(ModelAndView mv) {
           //赋予视图名称 相当于指定跳转的页面
            mv.setViewName("main");
        mv.addObject("username", "laonanren");
        return mv;
    }

    //第三种 传入Model 与第二种相比不用传入视图 直接使用跳转
    //也是传入请求域中
    @RequestMapping("/test6")
    public String test6(Model model) {
        //设置模型  相当于向请求域存值
        model.addAttribute("username", "dalaoer");
        //跳转
        //1.重定向
        // 请求域中的值会给/user/update
//    return "redirect:/user/update";  //会在url路径上自动拼上?username=dalaoer

        //请求转发 服务器端跳转
        return "forward:/user/update";
    }


    //使用map集合向请求域存值
    @RequestMapping("/test7")
    public String test7(Map map) {
        map.put("username", "dasabi");
        //跳转
        return "main";
    }
}
